<!DOCTYPE html>
<style>
html, body {
  margin: 0;
}
.spacer {
  background-color: blue;
  width: 100px;
  height: 10000px;
}
#test {
  background-color: green;
  width: 100px;
  height: 100px;
}
</style>
<div>
  <p>Clicking the red rectangle should attempt a navigation to the fragment identifier.</p>
  <svg width="300" height="200" onload="runTest()">
    <a xlink:href="#test">
      <rect width="100" height="100" fill="red"/>
    </a>
  </svg>
</div>
<div class="spacer"></div>
<div id="test"></div>
<div class="spacer"></div>
<script>
if (window.testRunner) {
  testRunner.waitUntilDone();
  testRunner.dumpAsText();
}

function runTest() {
  var evt = document.createEvent("MouseEvents");
  var oldScrollOffset = window.scrollY;
  evt.initMouseEvent("click", true, true, window,
        0, 0, 0, 0, 0, false, false, false, false, 0, null); 
  document.querySelector('a').dispatchEvent(evt);
  window.setTimeout(function checkNavigation() {
    var hasHash = location.hash === '#test';
    var didScrollDown = oldScrollOffset < window.scrollY;
    var didNotScrollToDocBottom = window.scrollY + window.innerHeight < document.body.offsetHeight;
    var result = hasHash && didScrollDown && didNotScrollToDocBottom ? 'PASS' : 'FAIL';
    document.documentElement.appendChild(document.createTextNode(result));
    if (window.testRunner)
      testRunner.notifyDone();
  }, 0);
}
</script>
